import java.util.*;

public class Solution773 {

    public int slidingPuzzle(int[][] board) {
        Map<List<Integer>,Integer> map=new HashMap<>();
        List<Integer> first=new ArrayList<>();
        for (int i=0;i<2;i++){
            for (int j=0;j<3;j++){
                first.add(board[i][j]);
            }
        }
        map.put(first,0);
        Queue<List<Integer>> queue=new LinkedList<>();
        queue.add(first);
        while (!queue.isEmpty()){
            List<Integer> list=queue.poll();
            int step=map.get(list);
            int rec=-1;
            for (int i=0;i<6;i++){
                if (list.get(i)==0){
                    rec=i;
                    break;
                }
            }
            if (rec%3!=0){
                List<Integer> l=new ArrayList<>(list);
                l.set(rec,l.get(rec-1));
                l.set(rec-1,0);
                if (!map.containsKey(l)){
                    queue.offer(l);
                    map.put(l,step+1);
                }
            }
            if (rec%3!=2){
                List<Integer> l=new ArrayList<>(list);
                l.set(rec,l.get(rec+1));
                l.set(rec+1,0);
                if (!map.containsKey(l)){
                    queue.offer(l);
                    map.put(l,step+1);
                }
            }
            if (rec<3){
                List<Integer> l=new ArrayList<>(list);
                l.set(rec,l.get(rec+3));
                l.set(rec+3,0);
                if (!map.containsKey(l)){
                    queue.offer(l);
                    map.put(l,step+1);
                }
            }
            if (rec>2){
                List<Integer> l=new ArrayList<>(list);
                l.set(rec,l.get(rec-3));
                l.set(rec-3,0);
                if (!map.containsKey(l)){
                    queue.offer(l);
                    map.put(l,step+1);
                }
            }
        }
        List<Integer> target=new ArrayList<>();
        target.add(1);
        target.add(2);
        target.add(3);
        target.add(4);
        target.add(5);
        target.add(0);
        return map.getOrDefault(target,-1);
    }

    public static void main(String[] args) {
        System.out.println(new Solution773().slidingPuzzle(new int[][]{{4,1,2},{5,0,3}}));
    }
}
